package c10异常;

/**
 * Java将Exception分为Checked异常（Java特有，其他语言没有）和Runtime异常。
 * RuntimeException及其子类都是Runtime异常（常见的有：NullPointerException,
 * ArrayIndexOutOfBoundsException,ClassCastException,IllegalArgumentException,
 * NoSuchElementException,ArithmeticException（比如除0错误）），除此之外的异常都属于Checked异常。
 * <p>
 * Java认为Checked异常都是可以在编译阶段被处理的异常，所以它强制程序处理这种异常
 * （或在当前方法中捕获处理，或抛到高层让调用者处理），否则无法通过编译。
 * 而Runtime异常则不必。
 *
 * @author 炜sama
 */
public class Runtime异常与Checked异常 {

	public static void main(String[] args) {
//		throw new RuntimeException();//Java不强制要求捕获运行时异常！

		try {
			throw new Exception();//Java强制要求捕获非运行时异常，即Checked异常！
		} catch (Exception e) {
			e.printStackTrace();
		}

//		throw new MyRuntimeEx();//此自定义异常继承于运行时异常，也属于运行时异常！待遇同运行时异常！

		try {
			throw new MyCheckedEx();//此自定义异常继承于Checked异常，也属于Checked异常！待遇同Checked异常！
		} catch (MyCheckedEx e) {
			e.printStackTrace();
		}
	}
}

class MyRuntimeEx extends RuntimeException {
}

class MyCheckedEx extends Exception {
}